package lzupdater.gui;

import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.AbstractAction;
import javax.swing.JFrame;

import lzupdater.gui.elements.LocalizedJCheckBoxMenuItem;
//LZRosterUpdater, a java client to update LZRoster
//Copyright (C) 2008 Fraskor from Krasus (e-mail: fraskor@gmail.com)
//
//This file is part of LZRosterUpdater.
//
//LZRosterUpdater is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

public class WindowsMenuItem extends LocalizedJCheckBoxMenuItem {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2357680902857753083L;
	private JFrame frame;
	
	public WindowsMenuItem(String key, JFrame frame) {
		super(key);
		this.frame = frame;
		
		setAction(initializeAction());
		initializeFrame();
	}
	
	private AbstractAction initializeAction() {
		return new AbstractAction() {
			/**
			 * 
			 */
			private static final long serialVersionUID = -9083024879778512241L;

			public void actionPerformed(ActionEvent arg0) {
				frame.setVisible(WindowsMenuItem.this.isSelected());
			}
		};
	}
	
	private void initializeFrame() {
		frame.addWindowListener(new WindowListener() {
			public void windowActivated(WindowEvent e) {}
			public void windowClosed(WindowEvent e) {}
			public void windowClosing(WindowEvent e) {WindowsMenuItem.this.setSelected(false);}
			public void windowDeactivated(WindowEvent e) {}
			public void windowDeiconified(WindowEvent e) {}
			public void windowIconified(WindowEvent e) {}
			public void windowOpened(WindowEvent e) {}
			
		});

	}
	
}
